RongIMClient.init(rongKey);
// 设置连接监听状态
RongIMClient.setConnectionStatusListener({
    // status 标识当前连接状态
    onChanged: function (status) {
        switch (status) {
            case 1:
                console.log('正在连接');break;
            case 0:
                console.log('连接成功');break;
            case 2:
                swalNotice('连接已断开');break;
            case 3:
                swalNotice('网络不可用');break;
            case 4:
                swalNotice('连接已关闭');break;
            case 6:
                swalNotice('其他设备登录, 本端被踢');break;
            default:
                console.log('链接状态为', status);break;
        }
    }
});

// 连接融云服务器
RongIMClient.connect(rongToken, {
    onSuccess(userId) {
        console.log('连接成功, 用户 id 为', userId);
        var count = 50;  //显示最近的20条信息
        //加入聊天室
        RongIMClient.getInstance().joinChatRoom(chatRoomId, count, {
            onSuccess() {
                //当前用户首次进入聊天室：给页面传入【新加入直播间】用户的信息

                //【一】组织待发送的内容信息
                var msg = "ple:" + "刚刚进入直播间";
                var msgInfo = {
                    'avatar'   : ownUserInfo['avatar'],
                    'msg_type' : 'jroom',
                    'content'  : msg
                };

                var msgHtml = rongCreateMessage(msgInfo);

                //【二】执行内容发送
                rongSendTextMessage(chatRoomId.toString(),msg,msgHtml);
                console.log('加入聊天室成功');
            },
            onError(error) {
                swalNotice('加入聊天室失败');
                // console.log('加入聊天室失败', error);
            }
        });
    },
    onTokenIncorrect() {
        console.log('token无效');
    },
    onError(errorCode){
        var info = '';
        switch (errorCode) {
            case RongIMLib.ErrorCode.TIMEOUT:
                info = '超时';
                break;
            case RongIMLib.ErrorCode.UNKNOWN_ERROR:
                info = '未知错误';
                break;
            case RongIMLib.ErrorCode.UNACCEPTABLE_PaROTOCOL_VERSION:
                info = '不可接受的协议版本';
                break;
            case RongIMLib.ErrorCode.IDENTIFIER_REJECTED:
                info = 'appkey不正确';
                break;
            case RongIMLib.ErrorCode.SERVER_UNAVAILABLE:
                info = '服务器不可用';
                break;
        }
        console.log(info)
    }
});

// 消息监听器
RongIMClient.setOnReceiveMessageListener({
    // 接收到的消息
    onReceived (message) {
        // console.log("消息监听结果");
        // 判断消息类型
        switch(message.messageType){
            //发送文本消息
            case RongIMClient.MessageType.TextMessage:
                // console.log(message);

                // 发消息的用户id
                var sendMessageUid = message.senderUserId;

                // 接收到的消息
                var receiveMessage = message.content.content;

                // 将消息插入对话框中：获取的消息要发送到对方的头像
                var avatar   = "/web/img/face"+sendMessageUid +".jpg";

                var msg_type = 'text'; //通过回复的内容判断内容所展示到的区域
                if(receiveMessage.substring(0,4) == "ple:"){
                    msg_type = 'place';
                }
                // if(receiveMessage.substring(0,4) == "url:"){
                //     msg_type = 'url';
                // }
                var messageContent = {
                    'avatar'  : avatar,
                    'msg_type': msg_type,
                    'content' : receiveMessage
                };
                // 创建消息对象html
                var messageStr = rongCreateMessage(messageContent);

                msgOutPage(messageStr,msg_type);
                break;
            //发送图片
            case RongIMClient.MessageType.ImageMessage:
                break;
            case RongIMClient.MessageType.HQVoiceMessage:        // 音频消息
                console.log('音频 type ', messageContent.type); // 编解码类型，默认为 aac 音频
                console.log('音频 url', messageContent.remoteUrl); // 播放：<audio src={remoteUrl} />
                console.log('音频 时长', messageContent.duration);
                break;
            case RongIMClient.MessageType.RichContentMessage: // 富文本(图文)消息
                console.log('文本内容', messageContent.content);
                console.log('图片 base64', messageContent.imageUri);
                console.log('原图 url', messageContent.url);
                break;
            case RongIMClient.MessageType.UnknownMessage: // 未知消息
                // console.log('未知消息, 请检查消息自定义格式是否正确', message);
                switch(message.objectName){ //自定义的消息类型
                    case "notice" :
                        //刚刷新的时候不进入这个地方，进入页面后点赞的时候再进来：定义一个定时器，2秒后的操作再进来
                        var content = message.content.message.content;//发送的内容信息
                        var num = $("#heart").text();
                        if(heart_status){
                            $("#heart").text(num - 1 + 2);
                        }
                        break;
                    default :
                        console.log("其他信息");
                }
                break;
            default:
                console.log('收到消息', message);
                break;
        }
    }
});

/**
 * 执行发送文本消息
 * @param  {integer} targetId  聊天室id
 * @param  {string}  content   用户发送的消息
 * @param  {string}  msgHtml   待发送消息组合后的HTML
 * @param  {string}  msgType   待发送消息的展示区域类型
 */
function rongSendTextMessage(targetId,content,msgHtml){
    // 定义消息类型,文字消息使用 RongIMLib.TextMessage
    var msg = RongIMLib.TextMessage.obtain(content);
    var conversationtype = RongIMLib.ConversationType.CHATROOM; // 聊天室

    RongIMClient.getInstance().sendMessage(conversationtype, targetId, msg, {
        // 发送消息成功
        onSuccess: function (message) {
            //message 为发送的消息对象并且包含服务器返回的消息唯一Id和发送消息时间戳
            console.log("Send 成功");

            //信息输出
            msgOutPage(msgHtml);
        },
        onError: function (errorCode,message) {
            /*
             * errorCode 错误码
             * message   刚刚发送的消息
             */
            var info = '';

            switch (errorCode) {
                case 500:
                    info = '请求超时，请稍后重试';break;
                case 504:
                    info = '请求超时，请稍后重试';break;
                case 23406:
                    info = '抱歉，您不在当前直播间中';break;
                case 23408:
                    info = '抱歉，您在当前直播间已被禁言';break;
                case 23409:
                    info = '抱歉，您已被踢出当前直播间并禁止加入该直播间';break;
                case 23410:
                    info = '抱歉，当前直播聊天室不存在';break;
                default :
                    // info = x;
                    break;
            }

            //错误提醒
            swalNotice(info);
        }
    })
}

/**
 * 消息内容输出处理
 */
function msgOutPage(msgHtml) {
    //信息追加到聊天室中
    $('.chat-user-part').append(msgHtml);

    // 调整滚动轴到底部
    rongChangeScrollHeight(99999);
}

/**
 * 表情发送处理
 */

var RongIMEmoji = RongIMLib.RongIMEmoji;
//初始化
RongIMEmoji.init();
//展开表情
$("#chatbox-icon").click(function () {
    var iconBox = $("#chatbox-emoji-box");
    if(!iconBox.hasClass("show")){
        iconBox.addClass("show");
    }else{
        iconBox.removeClass("show");
    }
    var shadowDomList = [];
    for (var i = 0; i < RongIMEmoji.list.length; i++) {
        var value = RongIMEmoji.list[i];
        shadowDomList.push(value.node);
    }
    iconBox.html(shadowDomList);
});

//单个表情点击事件
$(document).on("click",".chatbox-emoji-box .rong-emoji-content",function () {
    var name = $(this).attr("name");
    var content = $("#desc").val();
    $("#desc").val(content+name);  //将文字内容追加的文本输入区域
});

/**
 * 组合聊天框中的消息
 * @param  {obj} messageContent 消息内容
 */
function rongCreateMessage(messageContent){
    var content = '',str = '';
    if(messageContent['msg_type'] == 'text'){
        content = RongIMEmoji.symbolToHTML(messageContent['content'].replace(/\r\n|\n|\r/g, '<br/>'));
        str = '' +
            '<li class="chat-left chat-one">\n' +
            '    <div class="chat-headpic"><img src="'+messageContent['avatar']+'"></div>\n' +
            '    <div class="content-left">'+content+'</div>\n' +
            '</li>';
    }
    if(messageContent['msg_type'] == 'place'){
        content = messageContent['content'].substring(4); //截取内容
        str = '' +
            '<li class="chat-left jroom">\n' +
            '    <span class="name"><img src="'+messageContent['avatar']+'"></span>\n' +
            '    <span class="content">'+content+'</span>\n' +
            '</li>';
    }
    // if(messageContent['msg_type'] === 'url'){
    //     var url = messageContent['content'].substring(4);
    //     //根据“,”将字符串分组
    //     var arr = [];
    //     var ope_state;
    //     arr = url.split(',');
    //     if(arr[2] === 'bl'){
    //         ope_state = "病历";
    //     }
    //     if(arr[2] === 'da'){
    //         ope_state = "档案";
    //     }
    //     content = '<a href="'+arr[0]+'" class="url-href"><i class="fa fa-clipboard"></i> '+decodeURI(arr[1])+'<br>的'+ope_state+'</a>';
    // }

    return str;
}


/**
 * bootstrap 消息错误提醒
 */
function swalNotice(info) {
    swal({
        text: info,
        icon: "error",
        buttons: {
            confirm: {
                text: "确定"
            }
        }
    });
}

/**
 * 调整对话框滚动轴位置
 * @param  {integer} num 滚动轴位置
 */
function rongChangeScrollHeight(num){
    $('#ul').scrollTop(num);
}
